package com.woniuxy.common;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 在 MyBatis-Plus 中，MetaObject 是用于操作对象属性的工具类，它基于 Java 的反射机制实现。
 * 当 MyBatis-Plus 进行 SQL 插入、更新操作时，它可能会使用 MetaObject 来设置或获取对象的属性值。
 *
 * 例如，在 MyBatis-Plus 的自动填充功能中，你可以定义一个方法，该方法接受一个 MetaObject 参数，并在其中设置一些默认属性值。
 * 这样，当执行插入操作时，这些默认属性值会被自动填充到对象中。
 */
@Component
public class UserMetaObjectHandler implements MetaObjectHandler {
    /**
     * 插入元对象字段填充（用于插入时对公共字段的填充）
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        //参数：属性名，要填充的值，方法形参元对象
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
    /**
     * 更新元对象字段填充（用于更新时对公共字段的填充）
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}
